package main

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"os"
	"xorm.io/xorm"
	"xorm.io/xorm/log"
)

//导入导出数据库结构和数据 :https://xorm.io/zh/docs/chapter-03/5.dumpimport/
//Dump 数据库结构和数据
//如果需要在程序中 Dump 数据库的结构和数据可以调用
//
//engine.DumpAll(w io.Writer)
//
//和

// engine.DumpAllToFile(fpath string)。
//
// DumpAll 方法接收一个io.Writer接口来保存Dump出的数据库结构和数据的SQL语句，这个方法导出的SQL语句并不能通用。只针对当前engine所对应的数据库支持的SQL。
//
// Import 执行数据库SQL脚本
// 如果你需要将保存在文件或者其它存储设施中的SQL脚本执行，那么可以调用
//
// engine.Import(r io.Reader)
//
// 和
//
// engine.ImportFile(fpath string)
//
// 同样，这里需要对应的数据库的SQL语法支持。

func main() {
	var err error
	var engine *xorm.Engine
	var dns string = "root:root123@tcp(127.0.0.1:3306)/xorm1?charset=utf8mb4&parseTime=True&loc=Local"
	engine, err = xorm.NewEngine("mysql", dns)
	if err != nil {
		panic(err)
	}
	//创建完成 engine 之后，并没有立即连接数据库，此时可以通过 engine.Ping() 或者 engine.PingContext() 来进行数据库的连接测试是否可以连接到数据库。
	err = engine.Ping()
	if err != nil {
		panic(err)
	}

	fmt.Printf("数据库连接成功:%s \n", dns)
	f, err := os.Create("sql.log")
	engine.SetLogger(log.NewSimpleLogger(f))
	engine.SetLogLevel(log.DEFAULT_LOG_LEVEL)

	//dump
	engine.DumpAllToFile("dump.sql")

	//engine.ImportFile(fpath string)
}
